package CapaLogica;

//  @ Project : PrGaleriaAmejia_Drivera
//  @ File Name : Mecenazgo.java
//  @ Date : 01/04/2012
//  @ Author : Amejia_Drivera

import java.util.*;

public class Gestor {
    
    public  boolean registrarArtista(int pid,String pnombreCompleto,String palias,String pnacionalidad,String pciudad,
                 String pfec_naci, String pfec_fall, String pindTipo, int pidMaestro, String nomEscu) throws Exception{
        Artista objArtista = new MultiArtista().crear(pid, pnombreCompleto, palias, pnacionalidad, pciudad, pfec_naci, pfec_fall, pindTipo, pidMaestro, nomEscu);
        return objArtista!=null;
    }

    public  void actualizarArtista(int pid,String pnombreCompleto,String palias,String pnacionalidad,String pciudad,
                 String pfec_naci, String pfec_fall, String pindTipo, String pnomEscu) throws Exception{
        Artista objArtista = new MultiArtista().buscarPorId(pid);
        objArtista.setId(pid);
        objArtista.setNombreCompleto(pnombreCompleto);
        objArtista.setAlias(palias);
        objArtista.setNacionalidad(pnacionalidad);
        objArtista.setCiudad(pciudad);
        objArtista.setFechaNacimiento(pfec_naci);
        objArtista.setFechaFallecimiento(pfec_fall);
        objArtista.setIndTipoPintor(pindTipo);
        objArtista.setNomEscuela(pnomEscu);
        new MultiArtista().actualizar(objArtista);
    }     
    
    public TreeMap buscarInfoGeneralArtista(int pid) throws Exception {
        TreeMap datos;
        Artista objArtista;
        datos = new TreeMap();
        objArtista = new MultiArtista().buscarPorId(pid);
        ArrayList<Obra> listaObra = new MultiObra().buscarPorIdArtista(objArtista.getId());
        String listadoDeObras = "Obra             Fecha\n";
        for(int i = 0, j=1; i < listaObra.size();i++, j++){
            listadoDeObras +=  j + ". "  + listaObra.get(i).getNombre() + "   " + listaObra.get(i).getFechaRealizada() + "\n";
        }
        ArrayList<Mecenazgo> listaMecenas = new MultiMecenazgo().buscarPorIdArtista(objArtista.getId());
        String listadoDeMecenas = "Mecena(s):\n";
        Mecenas objMecena;
        for(int i = 0, j=1; i < listaMecenas.size();i++, j++){
            objMecena = new MultiMecenas().buscarPorId(listaMecenas.get(i).getCodMecena());
            if(objMecena!=null)
                listadoDeMecenas +=  j + ". "  + objMecena.getNombreCompleto() + "\n";
        }
        datos.put("id", objArtista.getId());
        datos.put("nombre", objArtista.getNombreCompleto());
        datos.put("alias", objArtista.getAlias());
        datos.put("nacionalidad", objArtista.getNacionalidad());
        datos.put("ciudad", objArtista.getCiudad());
        datos.put("fecha_nac", objArtista.getFechaNacimiento());
        datos.put("fecha_fall", objArtista.getFechaFallecimiento());
        datos.put("pintor_fam", objArtista.getIndTipoPintor());
        datos.put("escuela", objArtista.getNomEscuela());
        datos.put("lista_obras", listadoDeObras);
        datos.put("mecenas", listadoDeMecenas);
        return datos;
    }
    
    public ArrayList buscarArtistaPorNombre(String pnomArtista) throws Exception {
        Artista objArtista;
        ArrayList<Artista> listaArtista = new MultiArtista().buscarPorNombre(pnomArtista);
        ArrayList<TreeMap> listadoDeArtistas  = new ArrayList<>();
        for(int i = 0, j=1; i < listaArtista.size();i++, j++){
            objArtista = listaArtista.get(i);
            TreeMap datos = new TreeMap();
            datos.put("id", objArtista.getId());
            datos.put("nombre", objArtista.getNombreCompleto());
            datos.put("alias", objArtista.getAlias());
            datos.put("nacionalidad", objArtista.getNacionalidad());
            datos.put("ciudad", objArtista.getCiudad());
            datos.put("fecha_nac", objArtista.getFechaNacimiento());
            datos.put("fecha_fall", objArtista.getFechaFallecimiento());
            datos.put("pintor_fam", objArtista.getIndTipoPintor());
            datos.put("escuela", objArtista.getNomEscuela());
            listadoDeArtistas.add(datos);
        }
        return listadoDeArtistas;
    }
    
    public ArrayList listarArtistaDisponibles(int pmecena) throws Exception {
        Artista objArtista;
        ArrayList<Artista> listaArtista = new MultiArtista().listarArtistasDisponibles(pmecena);
        ArrayList<TreeMap> listadoDeArtistas  = new ArrayList<>();
        for(int i = 0, j=1; i < listaArtista.size();i++, j++){
            objArtista = listaArtista.get(i);
            TreeMap datos = new TreeMap();
            datos.put("id", objArtista.getId());
            datos.put("nombre", objArtista.getNombreCompleto());
            datos.put("alias", objArtista.getAlias());
            datos.put("nacionalidad", objArtista.getNacionalidad());
            datos.put("ciudad", objArtista.getCiudad());
            datos.put("fecha_nac", objArtista.getFechaNacimiento());
            datos.put("fecha_fall", objArtista.getFechaFallecimiento());
            datos.put("pintor_fam", objArtista.getIndTipoPintor());
            datos.put("escuela", objArtista.getNomEscuela());
            listadoDeArtistas.add(datos);
        }
        return listadoDeArtistas;
    }
    
   public ArrayList buscarArtistasMecenadosXMecena (int pidMecena) throws Exception {
        
       Artista objArtista;
        Mecenas objeMecena=new MultiMecenas().buscarPorId(pidMecena);
        ArrayList<Mecenazgo> listaMecenazgos=objeMecena.getListaMecenados();
        ArrayList<TreeMap> listadoDeArtistas  = new ArrayList<>();
        
        for(int i = 0, j=1; i < listaMecenazgos.size();i++, j++){
            objArtista = listaMecenazgos.get(i).getArtistaMece();
            TreeMap datos = new TreeMap();
            datos.put("id", objArtista.getId());
            datos.put("nombre", objArtista.getNombreCompleto());
            datos.put("alias", objArtista.getAlias());
            datos.put("nacionalidad", objArtista.getNacionalidad());
            datos.put("ciudad", objArtista.getCiudad());
            datos.put("fecha_nac", objArtista.getFechaNacimiento());
            datos.put("fecha_fall", objArtista.getFechaFallecimiento());
            datos.put("pintor_fam", objArtista.getIndTipoPintor());
            datos.put("escuela", objArtista.getNomEscuela());
            listadoDeArtistas.add(datos);
        }
        return listadoDeArtistas;
    }
    
     public ArrayList buscarArtistaPorNombre_id(int pid,String pnomArtista) throws Exception {
        Artista objArtista;
        ArrayList<Artista> listaArtista = new MultiArtista().buscarPorNombre_id(pid,pnomArtista);
        ArrayList<TreeMap> listadoDeArtistas  = new ArrayList<>();
        for(int i = 0, j=1; i < listaArtista.size();i++, j++){
            objArtista = listaArtista.get(i);
            TreeMap datos = new TreeMap();
            datos.put("id", objArtista.getId());
            datos.put("nombre", objArtista.getNombreCompleto());
            datos.put("alias", objArtista.getAlias());
            datos.put("nacionalidad", objArtista.getNacionalidad());
            datos.put("ciudad", objArtista.getCiudad());
            datos.put("fecha_nac", objArtista.getFechaNacimiento());
            datos.put("fecha_fall", objArtista.getFechaFallecimiento());
            datos.put("pintor_fam", objArtista.getIndTipoPintor());
            datos.put("escuela", objArtista.getNomEscuela());
            listadoDeArtistas.add(datos);
        }
        return listadoDeArtistas;
    }  
    
    public boolean eliminarArtista(int pidArtista) throws Exception {
        boolean result=false; 
        ArrayList<Obra> listaObra = new MultiObra().buscarPorIdArtista(pidArtista);
        if(listaObra.isEmpty()){
            Artista objArtista;
            objArtista = new MultiArtista().buscarPorId(pidArtista);
            if(objArtista!=null){
                new MultiArtista().borrar(objArtista);
                result = true;
            }
        }
        return result;        
    }

    public  boolean registrarObra(String pcodigo,String pnombre,String pdimens,String pfechaReali
                ,String pduracionDesa, String ptecnica, String pestado, boolean pindFama,
                String desHisto,int pid_artista,String pfechaAdquisicion, 
                String pcostoAdquisicion, String pnombGal) throws Exception{
        
        Galeria objGaleria=new MultiGaleria().buscarUnaGaleria(pnombGal);
        Obra objObra=objGaleria.registrarObra(pcodigo, pnombre, pdimens, pfechaReali, pduracionDesa, ptecnica, pestado, pindFama, desHisto, pid_artista, pfechaAdquisicion, pcostoAdquisicion, objGaleria.getNombre());
        

        return objObra!=null;
    }
   
    public boolean actualizarObra(String pcodigo,String pnombre,String pdimens,String pfechaReali
                ,String pduracionDesa, String ptecnica, String pestado, boolean pindFama,
                String pdesHisto,int pidArtista) throws Exception{
        
        Obra objObra = new MultiObra().buscarPorCodigo(pcodigo);
        if(objObra!=null){
            objObra.setNombre(pnombre);
            objObra.setDimensiones(pdimens);
            objObra.setFechaRealizada(pfechaReali);
            objObra.setDuracionDesarrollo(pduracionDesa);
            objObra.setTecnica(ptecnica);
            objObra.setEstado(pestado);
            objObra.setIndFama(pindFama);
            objObra.setDesHistoria(pdesHisto);
            new MultiObra().actualizar(objObra);
        }
        
        return objObra!=null;
    }     
  
    public TreeMap buscarInfoGeneralObra(String pcodigo) throws Exception {
        TreeMap datos;
        Obra objObra;
        datos = new TreeMap();
        objObra = new MultiObra().buscarPorCodigo(pcodigo);
        datos.put("codigo", objObra.getCodigo());
        datos.put("nombre", objObra.getNombre());
        datos.put("dimensiones", objObra.getDimensiones());
        datos.put("fechaRealizada", objObra.getFechaRealizada());
        datos.put("duracionDesa", objObra.getDuracionDesarrollo());
        datos.put("tecnica", objObra.getTecnica());
        datos.put("estado", objObra.getEstado());
        datos.put("indFama", objObra.isIndFama());
        datos.put("desHistoria", objObra.getDesHistoria());
        datos.put("idArtista",objObra.getCodArtista());
        return datos;
    }
    
    public ArrayList buscarObraPorNombre(String pnomObra) throws Exception {
        Obra objObra;
        ArrayList<Obra> listaObra = new MultiObra().buscarPorNombre(pnomObra);
        ArrayList<TreeMap> listadoDeObras  = new ArrayList<>();
        for(int i = 0, j=1; i < listaObra.size();i++, j++){
            objObra = listaObra.get(i);
            TreeMap datos = new TreeMap();
            datos.put("codigo", objObra.getCodigo());
            datos.put("nombre", objObra.getNombre());
            datos.put("dimensiones", objObra.getDimensiones());
            datos.put("fechaRealizada", objObra.getFechaRealizada());
            datos.put("duracionDesa", objObra.getDuracionDesarrollo());
            datos.put("tecnica", objObra.getTecnica());
            datos.put("estado", objObra.getEstado());
            datos.put("indFama", objObra.isIndFama());
            datos.put("desHistoria", objObra.getDesHistoria());
            datos.put("idArtista",objObra.getCodArtista());
            listadoDeObras.add(datos);
        }
        return listadoDeObras;
    }
    

    public ArrayList buscarObrasPorGaleria(String pnomGaleria) throws Exception {
        Galeria objGaleria;
        Obra objObra;
        
        objGaleria=new MultiGaleria().buscarUnaGaleria(pnomGaleria);
        ArrayList<Adquisicion> listaAquisiciones =objGaleria.getPosesiones(); 
        ArrayList<TreeMap> listadoDeObras  = new ArrayList<>();
        
        if(listaAquisiciones.size()>0){
            for(int i = 0, j=1; i < listaAquisiciones.size();i++, j++){
                objObra = listaAquisiciones.get(i).getObraAquirida();
                TreeMap datos = new TreeMap();
                datos.put("codigo", objObra.getCodigo());
                datos.put("nombre", objObra.getNombre());
                datos.put("dimensiones", objObra.getDimensiones());
                datos.put("fechaRealizada", objObra.getFechaRealizada());
                datos.put("duracionDesa", objObra.getDuracionDesarrollo());
                datos.put("tecnica", objObra.getTecnica());
                datos.put("estado", objObra.getEstado());
                datos.put("indFama", objObra.isIndFama());
                datos.put("desHistoria", objObra.getDesHistoria());
                datos.put("artista", objObra.getArista().getNombreCompleto());
                datos.put("costo",listaAquisiciones.get(i).getCostoAdquisicion());
                datos.put("indExpo",listaAquisiciones.get(i).isIndExpo());
                listadoDeObras.add(datos);
            }
        }
        return listadoDeObras;
    }
    
   public ArrayList buscarObrasPorGaleriaFechas(String pnomGaleria,String pfechade,String pfechahasta) throws Exception {
        Galeria objGaleria;
        Obra objObra;
        
        objGaleria=new MultiGaleria().buscarUnaGaleria(pnomGaleria);
        ArrayList<Adquisicion> listaAquisiciones =objGaleria.getPosesionesPorFechas(pfechade, pfechahasta); 
        ArrayList<TreeMap> listadoDeObras  = new ArrayList<>();
        
        if(listaAquisiciones.size()>0){
            for(int i = 0, j=1; i < listaAquisiciones.size();i++, j++){
                objObra = listaAquisiciones.get(i).getObraAquirida();
                TreeMap datos = new TreeMap();
                datos.put("codigo", objObra.getCodigo());
                datos.put("nombre", objObra.getNombre());
                datos.put("dimensiones", objObra.getDimensiones());
                datos.put("fechaRealizada", objObra.getFechaRealizada());
                datos.put("duracionDesa", objObra.getDuracionDesarrollo());
                datos.put("tecnica", objObra.getTecnica());
                datos.put("estado", objObra.getEstado());
                datos.put("indFama", objObra.isIndFama());
                datos.put("desHistoria", objObra.getDesHistoria());
                datos.put("artista", objObra.getArista().getNombreCompleto());
                datos.put("costo",listaAquisiciones.get(i).getCostoAdquisicion());
                datos.put("indExpo",listaAquisiciones.get(i).isIndExpo());
                listadoDeObras.add(datos);
            }
        }
        return listadoDeObras;
    }
    
    public void eliminarObra(String pcodigo) throws Exception {
        Obra objObra;
        Adquisicion objAqui;
        objObra = new MultiObra().buscarPorCodigo(pcodigo);
        objAqui=new MultiAdquisicion().buscarPorCodigoObra(pcodigo);
        new MultiObra().borrar(objObra);
        new MultiAdquisicion().borrar(objAqui); 
    }


    public  boolean registrarGaleria(String pnombre,String pdireccion,String ptelefono,String pfec_ina
                ,String pnom_encar, String pdimension) throws Exception{
        Galeria objGaleria = new MultiGaleria().crear(pnombre, pdireccion, ptelefono, pfec_ina, pnom_encar, pdimension);
        return objGaleria!=null;
        
    }
   
    public  void actualizarGaleria(String pnombre,String pdir,String ptel,String pfech,String pnom_Encargado,String pdimension) throws Exception{
        Galeria objGaleria = new MultiGaleria().buscarUnaGaleria(pnombre);
        if(objGaleria!=null){
            objGaleria.setNombre(pnombre);
            objGaleria.setDireccion(pdimension);
            objGaleria.setTelefono(ptel);
            objGaleria.setFechaInaguracon(pfech);
            objGaleria.setNombreEncargado(pnom_Encargado);
            objGaleria.setDimension(pdimension);
            new MultiGaleria().actualizar(objGaleria);
        }
    } 
      
    public TreeMap buscarInfoGeneralGaleria(String pnombre) throws Exception {
        TreeMap datos;
        Galeria objGaleria;
        datos = new TreeMap();
        objGaleria = new MultiGaleria().buscarUnaGaleria(pnombre);
        if(objGaleria!=null){
            datos.put("nombre", objGaleria.getNombre());
            datos.put("direccion", objGaleria.getDireccion());
            datos.put("ptelefono", objGaleria.getTelefono());
            datos.put("fec_ina", objGaleria.getFechaInaguracon());
            datos.put("dimension", objGaleria.getDimension());
            datos.put("nom_encargado", objGaleria.getNombreEncargado());
        }
        return datos;
    }

    
    public ArrayList buscarGalerias(String pnombre) throws Exception {
        Galeria objGaleria;
        ArrayList<Galeria> listaGaleria = new MultiGaleria().buscarVariasGalerias(pnombre);
        ArrayList<TreeMap> listadoDeGalerias  = new ArrayList<>();
        for(int i = 0, j=1; i < listaGaleria.size();i++, j++){
            objGaleria = listaGaleria.get(i);
            TreeMap datos = new TreeMap();
            datos.put("nombre", objGaleria.getNombre());
            datos.put("direccion", objGaleria.getDireccion());
            datos.put("ptelefono", objGaleria.getTelefono());
            datos.put("fec_ina", objGaleria.getFechaInaguracon());
            datos.put("dimension", objGaleria.getDimension());
            datos.put("nom_encargado", objGaleria.getNombreEncargado());
            listadoDeGalerias.add(datos);
        }
        return listadoDeGalerias;
    }    
    
    public boolean eliminarGaleria(String pnombre) throws Exception {
        boolean result = false;
        ArrayList<Obra> listaObra = new MultiObra().buscarPorGaleria(pnombre);
        if(listaObra.isEmpty()){
            Galeria objGaleria;
            objGaleria = new MultiGaleria().buscarUnaGaleria(pnombre);
            if(objGaleria!=null){
                new MultiGaleria().borrar(objGaleria);       
                result = true;
            }    
        }        
        return result;
    }
    
    public  boolean registrarEscuela(String pnombre,String ppais,String fec_ina,String pdescrip) throws Exception{
        Escuela objEscuela = new MultiEscuela().crear(pnombre, ppais, fec_ina, pdescrip);
        return objEscuela!=null;
    }
   
    public  void actualizarEscuela(String pnombre, String ppais, String pfechaInaguracion, String pdescripcionCarac) throws Exception{
        Escuela objEscuela = new MultiEscuela().buscarPorNombre(pnombre);
        if(objEscuela!=null){
            objEscuela.setNombre(pnombre);
            objEscuela.setPais(ppais);
            objEscuela.setFechaInaguracion(pfechaInaguracion);
            objEscuela.setDescripcionCarac(pdescripcionCarac);
            new MultiEscuela().actualizar(objEscuela);
        }
    }    
  
    public TreeMap buscarInfoEscuela(String pnombre) throws Exception {
        TreeMap datos;
        Escuela objEscuela;
        datos = new TreeMap();
        objEscuela = new MultiEscuela().buscarPorNombre(pnombre);
        if(objEscuela!=null){
            datos.put("nombre", objEscuela.getNombre());
            datos.put("pais", objEscuela.getPais());
            datos.put("fec_ina", objEscuela.getFechaInaguracion());
            datos.put("decrip", objEscuela.getDescripcionCarac());
        }
        return datos;
    }   

    public ArrayList buscarEscuelas(String pnombre) throws Exception {
        Escuela objEscuela;
        ArrayList<Escuela> listaEscuela = new MultiEscuela().buscarEscuelasPorNombre(pnombre);
        ArrayList<TreeMap> listadoDeEscuelas = new ArrayList<>();
        for(int i = 0, j=1; i < listaEscuela.size();i++, j++){
            objEscuela = listaEscuela.get(i);
            TreeMap datos = new TreeMap();
            datos.put("nombre", objEscuela.getNombre());
            datos.put("pais", objEscuela.getPais());
            datos.put("fec_ina", objEscuela.getFechaInaguracion());
            datos.put("decrip", objEscuela.getDescripcionCarac());
            listadoDeEscuelas.add(datos);
        }
        return listadoDeEscuelas;
    } 
        
    public boolean eliminarEscuela(String pnombre) throws Exception {
        boolean result=false; 
        ArrayList<Artista> listaArtista = new MultiArtista().buscarPorEscuela(pnombre);
        if(listaArtista.isEmpty()){
            Escuela objEscuela;
            objEscuela = new MultiEscuela().buscarPorNombre(pnombre);
            if(objEscuela!=null){
                new MultiEscuela().borrar(objEscuela);
                result = true;
                
            }
        }
        return result; 
    }
    
   
    public  void actualizarAdquisicion(String pfechaAdquisicion, String pcondicionAdquirida, String pcostoAdquisicion,
            String pcodObra, String pnombGal) throws Exception{
        
        Adquisicion objAdquisicion = new MultiAdquisicion().buscarPorCodigoObra(pcodObra);
        objAdquisicion.setFechaAdquisicion(pfechaAdquisicion);
        objAdquisicion.setCondicionAdquirida(pcondicionAdquirida);
        objAdquisicion.setCostoAdquisicion(pcostoAdquisicion);
        objAdquisicion.setCodObra(pcodObra);
        objAdquisicion.setNomGal(pnombGal);
        new MultiAdquisicion().actualizar(objAdquisicion);
    }
    
    public void actualizaIndExpo(boolean indExpo,String pcodObra) throws Exception{
         
        Adquisicion objAdquisicion = new MultiAdquisicion().buscarPorCodigoObra(pcodObra);
        objAdquisicion.setIndExpo(indExpo);
        new MultiAdquisicion().expononerObra(objAdquisicion);
    }
    
  
    public TreeMap buscarInfoAdquisicion(String pcodObra) throws Exception {
        TreeMap datos;
        Adquisicion objAdquisicion;
        datos = new TreeMap();
        objAdquisicion = new MultiAdquisicion().buscarPorCodigoObra(pcodObra);
        Obra objObra = new MultiObra().buscarPorCodigo(objAdquisicion.getCodObra());        
        datos.put("codObra", objAdquisicion.getCodObra());
        datos.put("NombreObra", objObra.getNombre());
        datos.put("nomGaleria", objAdquisicion.getNomGal());
        datos.put("condicionAdquirida", objAdquisicion.getCondicionAdquirida());
        datos.put("costo", objAdquisicion.getCostoAdquisicion());
        datos.put("fechaAdquisicion", objAdquisicion.getFechaAdquisicion());
        return datos;
    }

    public ArrayList buscarAdquisicionPorGaleria(String pnomGal) throws Exception {
        Adquisicion objAdquisicion;
        ArrayList<Adquisicion> listaAdquisicion = new MultiAdquisicion().buscarPorGaleria(pnomGal);
        ArrayList<TreeMap> listadoDeAdquisicions  = new ArrayList<>();
        for(int i = 0, j=1; i < listaAdquisicion.size();i++, j++){
            objAdquisicion = listaAdquisicion.get(i);
            Obra objObra = new MultiObra().buscarPorCodigo(objAdquisicion.getCodObra());
            TreeMap datos = new TreeMap();
            datos.put("codObra", objAdquisicion.getCodObra());
            datos.put("NombreObra", objObra.getNombre());
            datos.put("nomGaleria", objAdquisicion.getNomGal());
            datos.put("condicionAdquirida", objAdquisicion.getCondicionAdquirida());
            datos.put("costo", objAdquisicion.getCostoAdquisicion());
            datos.put("fechaAdquisicion", objAdquisicion.getFechaAdquisicion());
            listadoDeAdquisicions.add(datos);
        }
        return listaAdquisicion;
    } 
    
    public ArrayList buscarAdquisicionPorFecha(String pfecha) throws Exception {
        Adquisicion objAdquisicion;
        ArrayList<Adquisicion> listaAdquisicion = new MultiAdquisicion().buscarPorGaleria(pfecha);
        ArrayList<TreeMap> listadoDeAdquisicions  = new ArrayList<>();
        for(int i = 0, j=1; i < listaAdquisicion.size();i++, j++){
            objAdquisicion = listaAdquisicion.get(i);
            Obra objObra = new MultiObra().buscarPorCodigo(objAdquisicion.getCodObra());
            TreeMap datos = new TreeMap();
            datos.put("codObra", objAdquisicion.getCodObra());
            datos.put("NombreObra", objObra.getNombre());
            datos.put("nomGaleria", objAdquisicion.getNomGal());
            datos.put("condicionAdquirida", objAdquisicion.getCondicionAdquirida());
            datos.put("costo", objAdquisicion.getCostoAdquisicion());
            datos.put("fechaAdquisicion", objAdquisicion.getFechaAdquisicion());
            listadoDeAdquisicions.add(datos);
        }
        return listaAdquisicion;
    } 
    
    
    public  boolean registrarMecenas(int pid,String pnombreCompleto,String ppais,String pciudad,String pfec_naci) throws Exception{
        Mecenas objMecenas = new MultiMecenas().crear(pid, pnombreCompleto, ppais, pciudad, pfec_naci);
        return objMecenas!=null; 
    }

    public boolean actualizarMecenas(int pid, String pnombreCompleto, String ppais, String pciudad, String pfechaNacimiento) throws Exception{
        Mecenas objMecenas = new MultiMecenas().buscarPorId(pid);
        if(objMecenas!=null){
            objMecenas.setId(pid);
            objMecenas.setNombreCompleto(pnombreCompleto);
            objMecenas.setPais(ppais);
            objMecenas.setCiudad(pciudad);
            objMecenas.setFechaNacimiento(pfechaNacimiento);
            new MultiMecenas().actualizar(objMecenas);
        }
        
        return objMecenas!=null;
    } 
    
  
    public TreeMap buscarInfoGeneralMecenas(int pid) throws Exception {
        TreeMap datos;
        Mecenas objMecenas;
        datos = new TreeMap();
        objMecenas = new MultiMecenas().buscarPorId(pid);
        if(objMecenas!=null){
            datos.put("id", objMecenas.getId());
            datos.put("nombre", objMecenas.getNombreCompleto());
            datos.put("pais", objMecenas.getPais());
            datos.put("ciudad", objMecenas.getCiudad());
            datos.put("fecha_nac", objMecenas.getFechaNacimiento());
        }
        return datos;
    }
    
    public ArrayList buscarMecenasPorNombre(int pid,String pnomMecenas) throws Exception {
        Mecenas objMecenas;
        ArrayList<Mecenas> listaMecenas = new MultiMecenas().buscarPorNombre(pid,pnomMecenas);
        ArrayList<TreeMap> listadoDeMecenas  = new ArrayList<>();
        for(int i = 0, j=1; i < listaMecenas.size();i++, j++){
            objMecenas = listaMecenas.get(i);
            TreeMap datos = new TreeMap();
            datos.put("id", objMecenas.getId());
            datos.put("nombre", objMecenas.getNombreCompleto());
            datos.put("pais", objMecenas.getPais());
            datos.put("ciudad", objMecenas.getCiudad());
            datos.put("fecha_nac", objMecenas.getFechaNacimiento());
            listadoDeMecenas.add(datos);
        }
        return listadoDeMecenas;
    }    
    
    public boolean eliminarMecenas(int pidMecenas) throws Exception {
        boolean result=false; 
        ArrayList<Mecenazgo> listaMecenazgo = new MultiMecenazgo().buscarPorIdMecena(pidMecenas);
        if(listaMecenazgo.isEmpty()){
            Mecenas objMecenas;
            objMecenas = new MultiMecenas().buscarPorId(pidMecenas);
            if(objMecenas!=null){
                new MultiMecenas().borrar(objMecenas);
                result = true;                
            }
        }
        return result;        
    } 

	public  boolean registrarMecenazgo(int pmecena,int pidartista,String pfec_ini,String pfec_fin) throws Exception{
        Mecenazgo objMecenazgo = new MultiMecenazgo().crear(pmecena, pidartista, pfec_ini, pfec_fin);
        return objMecenazgo!=null;
        
    }

    public boolean actualizarMecenazgo(String pfechaInicioMecenazgo, String pfechaFinMecenazgo, int pcodArtista, int pcodMecena) throws Exception{
        Mecenazgo objMecenazgo = new MultiMecenazgo().buscarPorIdMecenaIdArtista(pcodMecena, pcodArtista);
        if(objMecenazgo!=null){
            objMecenazgo.setFechaInicioMecenazgo(pfechaInicioMecenazgo);
            objMecenazgo.setFechaFinMecenazgo(pfechaFinMecenazgo);
            objMecenazgo.setCodArtista(pcodArtista);
            objMecenazgo.setCodMecena(pcodMecena);
            new MultiMecenazgo().actualizar(objMecenazgo);
            
        }
       return objMecenazgo!=null;
    } 
    
  
    public TreeMap buscarInfoGeneralMecenazgo(int pid_mecena, int pid_artista) throws Exception {
        TreeMap datos;
        Mecenazgo objMecenazgo;
        datos = new TreeMap();
        objMecenazgo = new MultiMecenazgo().buscarPorIdMecenaIdArtista(pid_mecena, pid_artista);
        if(objMecenazgo!=null){
            datos.put("idMecena", objMecenazgo.getCodMecena());
            datos.put("idArtista", objMecenazgo.getCodArtista());
            datos.put("fechaIni", objMecenazgo.getFechaInicioMecenazgo());
            datos.put("fechaFin", objMecenazgo.getFechaFinMecenazgo());
        }
        return datos;
    }
    
    public ArrayList buscarMecenazgoPorNombre(int pidArtista) throws Exception {
        Mecenazgo objMecenazgo;
        ArrayList<Mecenazgo> listaMecenazgo = new MultiMecenazgo().buscarPorIdArtista(pidArtista);
        ArrayList<TreeMap> listadoDeMecenazgo  = new ArrayList<>();
        for(int i = 0, j=1; i < listaMecenazgo.size();i++, j++){
            objMecenazgo = listaMecenazgo.get(i);
            TreeMap datos = new TreeMap();
            objMecenazgo = new MultiMecenazgo().buscarPorIdMecenaIdArtista(objMecenazgo.getCodMecena(),objMecenazgo.getCodMecena());
            if(objMecenazgo!=null){
                datos.put("idMecena", objMecenazgo.getCodMecena());
                datos.put("idArtista", objMecenazgo.getCodArtista());
                datos.put("fechaIni", objMecenazgo.getFechaInicioMecenazgo());
                datos.put("fechaFin", objMecenazgo.getFechaFinMecenazgo());
                listadoDeMecenazgo.add(datos);
            }
        }
        return listaMecenazgo;
    }    
    
    public boolean eliminarMecenazgo(int pid_mecena, int pid_artista) throws Exception {
        Mecenazgo objMecenazgo;
        objMecenazgo = new MultiMecenazgo().buscarPorIdMecenaIdArtista(pid_mecena, pid_artista);
        if(objMecenazgo!=null)
            new MultiMecenazgo().borrar(objMecenazgo);
        
        return objMecenazgo!=null;
    }
    
}
